package com.dys.ai.mapper;

import com.dys.ai.common.dto.BookingDetailsDTO;
import com.dys.ai.common.dto.OrderDTO;
import com.dys.ai.entity.Order;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 订单相关
 */
@Mapper
public interface OrderMapper {
    /**
     * 创建订单
     *
     * @param order 订单信息
     */
    void insertOrderInfo(@Param(value = "order") Order order);

    /**
     * 根据改签前的订单号查询订单信息
     *
     * @param originalOrderId 改签前的订单
     * @return 订单信息
     */
    Order selectById(Long originalOrderId);

    /**
     * 根据ID更新订单信息
     *
     * @param order 订单对象（需包含主键ID）
     */
    void updateById(Order order);

    /**
     * 插入新订单
     *
     * @param order 订单对象
     */
    void insert(Order order);

    /**
     * 订单列表
     */
    List<OrderDTO> listOrders();

    /**
     * 根据真实姓名和车次查询订单信息
     *
     * @param realName    真实姓名
     * @param trainNumber 车次
     * @return 订单信息
     */
    BookingDetailsDTO selectBookingDetailsByRealNameAndTrainNumber(@Param(value = "realName") String realName, @Param(value = "trainNumber") String trainNumber);


    /**
     * 更新订单信息
     * @param originalOrder 订单信息
     */
    void updateRefundInfoById(@Param(value = "originalOrder")Order originalOrder);
}
